package cn.stylefeng.guns.modular.order.service;

import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.order.entity.TbFreight;
import cn.stylefeng.guns.modular.order.model.params.TbFreightParam;
import cn.stylefeng.guns.modular.order.model.result.TbFreightResult;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 运费表 服务类
 * </p>
 *
 * @author zhou
 * @since 2019-08-05
 */
public interface TbFreightService extends IService<TbFreight> {

    /**
     * 新增
     *
     * @author zhou
     * @Date 2019-08-05
     */
    void add(TbFreightParam param);

    /**
     * 删除
     *
     * @author zhou
     * @Date 2019-08-05
     */
    void delete(TbFreightParam param);

    /**
     * 更新
     *
     * @author zhou
     * @Date 2019-08-05
     */
    void update(TbFreightParam param);

    /**
     * 查询单条数据，Specification模式
     *
     * @author zhou
     * @Date 2019-08-05
     */
    TbFreightResult findBySpec(TbFreightParam param);

    /**
     * 查询列表，Specification模式
     *
     * @author zhou
     * @Date 2019-08-05
     */
    List<TbFreightResult> findListBySpec(TbFreightParam param);

    /**
     * 查询分页数据，Specification模式
     *
     * @param param
     * @author zhou
     * @Date 2019-08-05
     */
     LayuiPageInfo findPageBySpec(TbFreightParam param);

    /**
     * 根据区域和目的地获取运费
     * @param param
     * @return
     */
    TbFreightResult getFreightByAreaAndDestination(TbFreightParam param);

    /**
     * 根据id查询重量与价格
     * @param id
     * @return
     */
    TbFreightResult getWeightPriceById(Integer id);

    /**
     * 根据id查询重量与价格
     * @param tbFreightParam
     * @return
     */
    LayuiPageInfo getWeightPriceList(TbFreightParam tbFreightParam);


    /**
     * 通过区域查询运费详细
     * area 区域
     * @param area
     * @return
     */
    TbFreightResult  freight(String area);

    /**
     * 通过区域查询运费详细
     * area 区域
     * @param area
     * @return
     */
    List<TbFreightResult>  moenyByCity(TbFreightParam tbFreightParam);

}
